
# -*- coding: utf-8 -*-
"""
Created on Thu Mar 31 21:46:03 2022

@author: Administrator
"""

# import json
# from gfzl import gf_tm

# r_d = gf_tm("djgf.text")[1]
# with open("djgf.json", "w", encoding='utf-8') as f:
#     json.dump(r_d, f, ensure_ascii=False)
# with open("djgf.json", "r", encoding='utf-8') as f:
#     kk = json.load(f)
# for i in list(kk.keys()):
#     print(i, kk[i])

# coding:utf-8

from PyQt5 import QtCore, QtGui, QtWidgets, Qt
import sys
import win32con
import win32gui
import win32api
import cv2


# 关于pyqt5的无标题栏，背景透明的应用学习
class MainUi(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.init_ui()

    def init_ui(self):
        self.setFixedSize(500, 100)
        self.label = Qt.QLabel('', self)
        self.label.resize(500, 50)
        self.label.move(0, 0)
        self.label.setStyleSheet('background-color:green;color: white')
        self.label1 = Qt.QLabel('', self)
        self.label1.resize(500, 50)
        self.label1.move(0, 50)
        self.label1.setStyleSheet('background-color:black')
        self.setWindowOpacity(0.85)  # 设置窗口透明度
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)  # 设置窗口背景透明
        self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)  # 顶置
        self.setWindowFlag(QtCore.Qt.FramelessWindowHint)  # 隐藏边框


import re

if __name__ == '__main__':

    s = "1.0.21地表排水系统应能满足明水和地下水的排放要求，地表 排水系统应采取防渗措施；\n"
    k = re.search(r"^(\d+.)\s?(\d+.)\s?(\d+)", s).group(0)
    print(k)
    app = QtWidgets.QApplication(sys.argv)

    gui = []
    i = 0
    for i in range(3):
        gui.append(MainUi())
        gui[i].move(6000, 100 + i * 200)
        gui[i].label.setText("fsdfsfsfs:" + str(i))
        gui[i].show()

    # gui1 = MainUi()
    # gui1.move(5000, 800)
    # label2 = Qt.QLabel(str(k), gui1)
    # label2.resize(500, 50)
    # label2.move(0, 0)
    # label2.setStyleSheet('background-color:green;color: white')
    # label3 = Qt.QLabel('', gui1)
    # label3.resize(500, 50)
    # label3.move(0, 50)
    # label3.setStyleSheet('background-color:black;color: white')

    # gui1.show()
    # a = input("请随意输入。\n")
    # # gui.close()
    # print(a)
    # label.setText(a)

    # 先生成一个窗体
    win1 = QtWidgets.QMainWindow()
    win1.setFixedSize(1000, 600)
    win1.move(1000, 1000)
    win1.setWindowTitle("fox")
    win1.show()
    win1.setAttribute(QtCore.Qt.WA_TranslucentBackground)
    win1.setWindowOpacity(0.9)
    # 对一般的窗口指定后变成无边框及窗体透明的。

    hwnd = win32gui.FindWindow(None, 'fox')  # 获取句柄，然后置顶

    # win32gui关于设置透明的总是出错，我干脆直接调用user32.dll
    import ctypes
    h = ctypes.windll.LoadLibrary("C:\\Windows\\System32\\user32.dll")

    # 消除边框和菜单栏
    # win32gui.SetWindowLong(hwnd, win32con.GWL_STYLE, win32gui.GetWindowLong(
    #     hwnd, win32con.GWL_EXSTYLE) or win32con.WS_EX_LAYERED)
    # t = win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE)
    # print(t)
    # win32gui.SetWindowLong(hwnd, win32con.GWL_STYLE,
    #                        t or win32con.WS_EX_LAYERED)

    # 本来可以让窗口透明，但是win32gui这个库估计有点问题这个函数就是运行返回错误。
    # 这样确实起作用，但是不同的程序产生的窗体，还有背景，和透明属性一条，所以win32gui把这条函数给禁了，例如
    # pyqt5生成的窗体，把背景也删了，然后透明度调节后，这个函数是可以调节透明度的。
    # 大概是相当于这个函数在窗体上设了额外的一层，背景的颜色无法调节。
    # h.SetLayeredWindowAttributes(
    #     hwnd, win32api.RGB(100, 10, 180), 50, win32con.LWA_ALPHA)
    h.MessageBoxW(0, u'内容', u'标题', 0)

    # 顶置
    win1.setFixedSize(500, 600)
    win32gui.SetWindowPos(hwnd, win32con.HWND_TOPMOST, 500,
                          300, 100, 100, win32con.SWP_SHOWWINDOW)

    # 需要重新显示一下否则是黑的
    # win32gui.ShowWindow(hwnd, win32con.SW_SHOW)
    # 因为标题栏需要缩小一点否则会有黑边。
    # cv2.resizeWindow('kw{0}'.format(img_i), CVRECT[2] - 27, CVRECT[3] - 70)

    sys.exit(app.exec_())
